// 姓名脱敏
function handleName (name) {
  if (!name) {
    return "";
  }
  let arr = Array.from(name);
  let result = "";
  if (arr.length === 2) {
    result = arr[0] + "*";
  } else if (arr.length > 2) {
    for (let i = 1; i < arr.length - 1; i++) {
      arr[i] = "*";
    }
    result = arr.join("");
  } else {
    return name;
  }
  return result;
}

// 电话脱敏
function handlePhone (phone) {
  return phone ? phone.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") : "";
}

// 邮箱脱敏
function handleEmail (email) {
  return email ? email.replace(/^(.{0,3}).*@(.*)$/, "$1***@$2") : "";
}

// 身份证脱敏
function handleIdCard (id) {
  return id ? id.replace(/^(.{4})(?:\d+)(.{4})$/, "$1**********$2") : "";
}

// 地址脱敏
function handleAddr (addr) {
  if (!addr) {
    return "";
  }
  /*
  脱敏规则：按长度分阶梯保留：长度5个字及以下的，保留第1个字和最后2个字；
  长度6-9个字的，保留最后5个字；长度为10个字及以上的，隐去最后5个字之前的4个字；隐藏字用*代替。
  示例：南街胡同口->南**同口；
  城中区立交桥下->**区立交桥下；
  汉东省江北市郊西县东城镇南吉村委会北首->汉东省江北市郊西县东****村委会北首。
  */
  let len = addr.length;
  if (len <= 3) {
    return addr;
  } else if (len <= 5) {
    return addr.slice(0, 1) + addr.slice(1, length - 2).replace(/./g, "*") + addr.slice(-2);
  } else if (len <= 9) {
    return addr.slice(0, length - 5).replace(/./g, "*") + addr.slice(-5);
  } else if (len <= 20) {
    return addr.slice(0, -9) + addr.slice(-9, -5).replace(/./g, "*") + addr.slice(-5);
  } else {
    return addr.slice(0, 9) + addr.slice(9).replace(/./g, "*");
  }
}

export default {
    handleName,
    handlePhone,
    handleEmail,
    handleIdCard,
    handleAddr
}
